package cn.hallele.leinsteining.mc.sdk.auditcenter.common.enums;

import cn.hallele.leinsteining.mc.infrastructure.data.converters.EnumConverter;
import cn.hutool.core.lang.func.Func1;
import cn.hutool.core.util.EnumUtil;
import lombok.Getter;

/**
 * 审计日志类型枚举
 *
 * @author anle5
 * @since 2024/7/28 16:12
 */
@Getter
public enum AuditLogTypeEnum implements EnumConverter<Integer> {
    /**
     * 配置类日志
     */
    CONFIG(1),

    /**
     * 接入接口调用日志
     */
    API(2),

    /**
     * 外发日志
     */
    OUTGOING(3),

    /**
     * 业务日志
     */
    BUSINESS(4);

    /**
     * 状态标识
     */
    private final Integer code;

    AuditLogTypeEnum(Integer code) {
        this.code = code;
    }

    /**
     * 转换成实体字段值
     *
     * @param columValue 表字段里面的值
     * @return name
     */
    @Override
    public EnumConverter<Integer> convertToEntityAttribute(Integer columValue) {
        return EnumUtil.getBy((Func1<AuditLogTypeEnum, Integer>) parameter -> parameter.code, columValue);
    }

    /**
     * 转换成表字段值
     *
     * @return 表字段里面的值
     */
    @Override
    public Integer convertToDatabaseColumn() {
        return this.code;
    }
}
